from abc import ABC, abstractmethod
import abc
from enum import Enum

class AbstractData(ABC):
    @abc.abstractmethod
    def __iter__(self):
        raise NotImplementedError()

class RawData(AbstractData):
    pass

class RecordData(AbstractData):
    pass

class OneHotData(AbstractData):
    pass

class FPTree(AbstractData):
    pass

class DataAdapter(ABC):
    @abstractmethod
    def __call__(self, data: AbstractData) -> AbstractData:
        pass

class DelimitedTableAdapter(DataAdapter):
    def __init__(self, list_of_delimiter: list[str] = [',', '，']) -> None:
        super().__init__()
        self.list_of_delimiter = list_of_delimiter

    def __call__(self, data: AbstractData) -> AbstractData:
        for row in data:
            pass
        return AbstractData()